<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 一、引入element-plus样式 -->
    <link rel="stylesheet" href="./static/element-plus/index.css" /><!-- Import style -->
    <link rel="stylesheet" href="./static/element-plus/theme-chalk/display.css" /><!-- 引入后,class="hidden-xs-only"才能执行 -->
    <script src="./static/js/vue.global.js"></script>               <!-- Import Vue 3 -->
    <script src="./static/element-plus/index.full.js"></script>     <!-- Import component library -->
    <style>
        a{text-decoration: none;}
    </style>
</head>
<body>
    <div id="app">
        <el-container>
            <el-header>
                <el-row>
                    <!-- 1、:span="4" 该元素占4列(一行有24列) 2、flex-direction: row;设置子元素沿水平方向排列 3、align-items: center;定义弹性容器内子元素在交叉轴（与主轴垂直的轴）上的对齐方式。 -->
                    <el-col :span="4" :xs="12" style="display: flex;flex-direction: row;align-items: center;">
                        <img src="./static/images/logo.png" style="height:60px;padding-right: 8px;"/>
                        <h2>技术社区</h2>
                    </el-col>
                    <el-col :span="8" :xs="12">
                        <!-- 1、default-active 设置默认选中哪一项  2、:ellipsis="false" 设置菜单项在屏幕缩小时不省略显示 -->
                        <el-menu :default-active="activeIndex" mode="horizontal" :ellipsis="false" style="border-bottom: none !important;"> 
                            <el-menu-item index="1"><a href="3_index.html">首页</a></el-menu-item>
                            <el-menu-item index="2">文章</el-menu-item>
                            <el-menu-item index="3">课程</el-menu-item>
                            <el-menu-item index="4">商场</el-menu-item>
                        </el-menu>
                    </el-col>
                    <!-- 1、:span="8" 该元素占8列  2、class="hidden-xs-only"当屏幕宽度小于768px时,隐藏该元素 -->
                    <el-col :span="8" class="hidden-xs-only" style="height: 60px;line-height: 60px;">
                        <el-input placeholder="请输入关键字"/>
                    </el-col>
                    <el-col :span="4" class="hidden-xs-only" style="height: 60px;line-height: 60px;text-align: right;">
                        <el-link type="primary" style="padding-right: 8px;"><a href="5_login.html">登录</a></el-link>
                        <el-link type="primary"><a href="4_register.html">注册</a></el-link>
                    </el-col>
                </el-row>
            </el-header>

            <el-container>
                <el-main>
                    <el-row :gutter="10"> <!-- :gutter="10" 把 <el-row> 组件内元素之间的间隔绑定为 10 像素 -->
                        <el-col :sm="8" :xs="12"  v-for="(product,i) in productList" :key="i"  style="margin-bottom: 10px;">
                            <el-card>
                                <img :src="product.img" style="width: 100%;"/>
                                <p>{{product.name}}</p>
                                <p>价格：{{product.price}}&nbsp;&nbsp;&nbsp;&nbsp;库存：{{product.stock}}</p>
                                <el-button @click="addToCard(product)">加入购物车</el-button>
                            </el-card>
                        </el-col>
                    </el-row>
                </el-main>
                <el-aside>
                    <el-card style="margin-top: 20px;">
                        <h2>购物车</h2>
                        <div v-if="cartItems.length>0">
                            <div v-for="(item,i) in cartItems" :key="i">
                                <p style="display: flex;flex-direction: row;align-items: center;">
                                    <img :src="item.img" style="width: 30%;margin-right: 5px;"/>
                                    {{item.name}}
                                </p>
                                <p>
                                    单价：￥{{item.price}}&nbsp;&nbsp;&nbsp;
                                    <el-input-number v-model="item.number" :min="0" :max="item.stock" @change="handleChange(item)" />
                                </p>
                                <el-divider style="margin: 10px 0;"/>
                            </div>
                        </div>
                        <div v-else>
                            <el-empty description="暂无商品"></el-empty>
                        </div>
                        <p>总价：￥{{totalPrice}}</p>
                    </el-card>
                </el-aside>
            </el-container>

            <el-footer>
                <el-row>
                    <!-- :lg="8" :xs="24" 表示在大屏幕上占8格，在小屏幕(宽度<768px)上占24格" -->
                    <el-col :lg="8" :xs="24" style="display: flex;flex-direction: row;align-items: center;">
                        <div><img src="./static/images/logo.png" style="width: 100px;"/></div>
                        <div style="padding-left: 8px;">
                            <h2>技术社区</h2>
                            <p>致力于构建一个专业的IT技术交流社区</p>
                        </div>
                    </el-col>
                    <!-- 1、flex-direction: column; 设置子元素为垂直排列  2、align-items: center; 设置子元素水平居中  3、justify-content: center; 设置子元素垂直居中 -->
                    <el-col :lg="8" :xs="24" style="display: flex;flex-direction: column;align-items: center;justify-content: center;">
                        <div  style="display: flex; justify-content: space-between; width: 65%; margin-bottom: 16px;">
                            <el-link type="primary">首页</el-link>
                            <el-link type="primary">文章</el-link>
                            <el-link type="primary">课程</el-link>
                            <el-link type="primary">商城</el-link>
                        </div>
                        <div  style="display: flex; justify-content: space-between; width: 70%;">
                            <el-link type="primary">关于我们</el-link>
                            <el-link type="primary">使用手册</el-link>
                            <el-link type="primary">隐私条款</el-link>
                            <el-link type="primary">建议反馈</el-link>
                        </div>
                    </el-col>
                    <el-col :lg="8" :xs="24">
                        <div style="float: right;">
                            <h2>联系我们</h2>
                            <p>电话：010-12345678</p>
                            <p>邮箱：12345678@qq.com</p>
                        </div>
                    </el-col>
                </el-row>
                <div style="background-color: #a0cfff;text-align: center;height: 60px;line-height: 60px;">软件开发工作室版权所有</div>
            </el-footer>
        </el-container>
    </div>    
</body>

    <script>
        var App={
            data(){
                return{
                    activeIndex:'4',                   
                    productList: [
                        { id:"1",type: '徽章', name: 'IT社区文创 ：「代码新秀闪耀」 荣誉徽章', price: 29, stock: 30, img: './static/images/product01.png' },
                        { id:"2",type: '帆布包', name: '【it社区文创】「极简主义」帆布包', price: 79, stock: 60, img: './static/images/product02.png' },
                        { id:"3",type: 'T恤', name: '蓝字魔法，解锁IT新风尚——百搭T恤衫', price: 12, stock: 100, img: './static/images/product03.png' },
                        { id:"4",type: 'U盘', name: 'IT达人必备：128GB紫色技术社区U盘', price: 39, stock: 80, img: './static/images/product04.png' },
                        { id:"5",type: '笔记本', name: '高端皮质IT笔记本，简约设计尽显专业气质', price: 29, stock: 30, img: './static/images/product05.png' },
                        { id:"6",type: '鼠标垫', name: '文创字母鼠标垫「IT技术社区专属」', price: 79, stock: 60, img: './static/images/product06.png' },
                        ],
                    cartItems:[],
                    totalPrice:0,
                };
            },
            methods:{
                //把商品加入购物车
                addToCard(product){
                    const cartItem=this.cartItems.find((item)=>{
                        return item.id===product.id;
                    });
                    if(cartItem){
                        cartItem.number++;
                    }else{
                        this.cartItems.push({...product,number:1}) //... 复制
                    }
                    this.calcPrice()
                },
                //删除商品
                removeFromCart(item){
                    const index=this.cartItems.indexOf(item);     //查找 item 在 this.cartItems 数组中首次出现的索引位置。如果数组中不存在该元素，则返回 -1。
                    if(index>-1){
                        this.cartItems.splice(index,1);           //从 this.cartItems 数组中移除指定位置的元素。index 是要删除元素的索引，1 表示只删除一个元素。
                    }
                },
                //改变数量触发事件
                handleChange(item){
                    if(item.number<=0){
                        this.removeFromCart(item);
                    }
                    this.calcPrice()
                },
                //计算总价
                calcPrice(){
                    this.totalPrice = this.cartItems.reduce((total,item)=>{     //reduce方法 用于对数组中的每个元素执行一个累加器函数
                        return total+item.price*item.number;
                    },0);                                                       //如果cartItems为空，则返回总价为 0
                },
            },
        };

        Vue.createApp(App).use(ElementPlus).mount("#app");

    </script>

</html>
